import pickle
import base64
from django_redis import get_redis_connection

def merge_cookie_redis_cart(request, user, response):

    """
    :param request: 为了获取cookie数据
    :param user: 为了获取redis数据
    :param response: 为了清除cookie数据
    :return:
    """
    # 1.获取cookie中是否有数据
    cookie_cart = request.COOKIES.get("cart")

    # 2.判断cookie数据为字典
    if not cookie_cart:
        return response

    # 3.转换cookie数据为字典
    cookie_dict = {}
    if cookie_cart:
        cookie_dict = pickle.loads(base64.b64decode(cookie_cart.encode()))
    # 4.获取redis数据
    redis_conn = get_redis_connection("cart")
    # cart_dict = redis_conn.hgetall("cart_%s" % user.id)
    # cart_selected_list = redis_conn.smembers("cart_selected_%s" % user.id)

    # 5.合并数据到redis
    for sku_id, count_selected in cookie_dict.items():
        redis_conn.hset("cart_%s" % user.id, sku_id, count_selected["count"])
        redis_conn.sadd("cart_selected_%s" % user.id, sku_id)

    # 6.清除cookie数据
    response.delete_cookie("cart")

    # 7.返回响应
    return response

